#include <iostream>
#include <memory>

struct A {
  int x;
};

const A *operator&(const A &a) {
  // return &a; <- infinite recursion
  return std::addressof(a);
}

int main(int argc, char *argv[]) {
  A a;

  std::cout << &a << "\n";

  return 0;
}
